package facetest;

import org.junit.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.locks.LockSupport;

/**
 * 实现一个容器，有add方法和size方法。   两个线程， 一个线程添加10个元素，  另一个线程监听当到添加到第5个的时候进行提示
 */
public class LockSupportTest {
    static Thread t1, t2;
    List list = new ArrayList<>();

    public void add(Object o) {
        list.add(o);
    }

    public int size() {
        return list.size();
    }

    @Test
    public void test() {

        t2 = new Thread(() -> {
            LockSupport.park();
            System.out.println("第5个了。。。提醒一下");
            LockSupport.unpark(t1);

        });
        t1 = new Thread(() -> {
            for (int i = 0; i < 10; i++) {
                System.out.println(i);
                list.add(i);
                if (list.size() == 5) {
                    LockSupport.unpark(t2);
                    LockSupport.park();
                }


            }


        });
        t2.start();
        t1.start();


        while (true) ;
    }
}
